import java.io.IOException;

import java.util.*;



class P10189 {



        private static String newLine = System.getProperty("line.separator");



        static String readLn () {

                StringBuffer buffer = new StringBuffer();

                int car = -1;



                try {

                        car = System.in.read();

                        while ((car > 0) && (car != newLine.charAt(0))) {

                                buffer.append((char)car);

                                car = System.in.read();

                        }

                        if (car == newLine.charAt(0))

                                System.in.skip(newLine.length() - 1);

                } catch (IOException e) {

                        return (null);

                }



                if ((car < 0) && (buffer.length() == 0))

                        return (null);  /* eof */

                return (buffer.toString());

        }





        public static void main(String[] args) {

          String linha;

          int contador = 1;

          linha = readLn();

          while ( !linha.equals("0 0")) {

            System.out.println("Field #" + contador + ":");

            System.out.print(computa(linha));

            contador++;

            linha = readLn();
            
            if (!linha.equals("0 0")) System.out.println();

          }

        }



        private static String computa(String linha) {

          StringTokenizer linhaQuebrada = new StringTokenizer(linha, " ");

          int altura = Integer.parseInt(linhaQuebrada.nextToken());

          int largura = Integer.parseInt(linhaQuebrada.nextToken());

          return imprimeMinas(computaMinas(leMatrix(altura, largura)));

        }



        private static int[][] leMatrix(int altura, int largura) {

          int campos[][] = new int[altura][largura];

          for (int k = 0; k < altura; k++) {

            String linha = readLn();

            for (int j = 0; j < largura; j++) {

              if (linha.charAt(j) == '.')

                campos[k][j] = 0;

              else campos[k][j] = -1;

            }

          }

          return campos;

        }



        private static int[][] computaMinas(int[][] campos) {

          int altura = campos.length;

          int largura = campos[0].length;

          for (int j = 0; j < altura; j++)

            for (int k = 0; k < largura; k++) {

              if (campos[j][k] == -1) {

                for (int l = -1; l <= 1; l++)

                  for (int m = -1; m <= 1; m++) {

                    int atualLargura = k + l;

                    int atualAltura = j + m;

                    if ((atualLargura > -1) &&

                        (atualLargura < largura) &&

                        (atualAltura > -1) &&

                        (atualAltura < altura) &&

                        (campos[atualAltura][atualLargura] != -1))

                      campos[atualAltura][atualLargura]++;

                  }

              }

            }

          return campos;

        }



    private static String imprimeMinas(int[][] campos) {

      String retorno = "";

      int altura = campos.length;

      int largura = campos[0].length;

      for (int k = 0; k < altura; k++) {

        for (int j = 0; j < largura; j++) {

          if (campos[k][j] == -1)

            retorno += '*';

          else retorno += campos[k][j];

        }

        retorno += newLine;

      }

      return retorno;

    }

}



